import { getToken, setToken, removeToken } from '@/utils/auth'
import { login, getUserProfile, getUserDetailById } from '@/api/user'
export default {
  namespaced: true,
  // 调用utils/auth中处理cookie的方法
  state: {
    // 保存本地
    token: getToken() || null,
    userInfo: {}
  },
  mutations: {
    takeToken(state, newToken) {
      state.token = newToken
      // 添加到本地
      setToken(newToken)
    },
    removeToken(state) {
      state.token = null
      // 清除cookie
      removeToken()
    },
    // 获取用户数据
    takeUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },
    // 清空用户数据
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    userLogout(context) {
      context.commit('removeUserInfo')
      context.commit('removeToken')
    },
    // Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象，因此你可以调用 context.commit 提交一个 mutation
    async userLogin(obj, loginForm) {
      // console.log('action userLogin', loginForm, obj)
      const res = await login(loginForm)
      console.log(res)
      obj.commit('takeToken', res.data)
    },
    async getUserInfo(context) {
      const res2 = await getUserProfile()
      console.log('用来获取用户信息的,', res2)
      const res3 = await getUserDetailById(res2.data.userId)
      console.log(res3)
      context.commit('takeUserInfo', { ...res2.data, ...res3.data })
    }
  }
}

